// 队列相关接口注入
package xginxnsq

import (
	"gitee.com/xiaoyutab/xgotool/optional/xnsq"
	"gitee.com/xiaoyutab/xgotool/xgin"
	"github.com/gin-gonic/gin"
)

// 此函数为直接注入路由，所以无需使用GET/POST等形式添加路由信息
// PS: 此处的接口均需要登陆才能访问【此处仅做了uid大于0的判定，所以前文需要先使用中间件进行判定写入uid】
//
//	r		gin路由组
//	config	xnsq配置信息
//	listen	是否直接启动NSQ监听
func Regedit(r *gin.RouterGroup, config *xnsq.Config, listen bool) {
	// 注入nsq队列信息
	xnsq.Regedit(config)
	// 判定是否需要启动监听
	if listen {
		go xnsq.Listen()
	}
	// 使用鉴权中间件
	r.Use(xgin.MustLogin)
	// 注入队列状态路由
	r.GET("status.list", xgin.Convert(statusList)) // 注入status.list接口，用于获取nsq队列状态
	r.GET("status", xgin.Convert(status))          // 注入status接口，用于获取运行状态
	r.POST("start", xgin.Convert(start))           // 注入start接口，用于启动nsq队列【可指定新的nsq地址】
	r.POST("stop", xgin.Convert(stop))             // 注入stop接口，用于停止nsq队列监听
}
